package TOP_Version1;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.Scanner;

public class Top_DepartCreate {
	static Top_DepartVO dv = new Top_DepartVO();
	static Top_JDBC_SQL topsql = new Top_JDBC_SQL();
	static Scanner sc = new Scanner(System.in);
	static Connection conn = null;
	static PreparedStatement pstmt = null;
	static ResultSet rs = null;
	static boolean a = false;
	static boolean b = true;
	static String logId = Top_LoginMain.logIdVO;
	
	protected static void createDepart() {
		while ( b ) {
			System.out.print("신규 등록하실 학과번호를 입력하세요 : ");
			dv.setDept_no( sc.next() );
			a = Top_CheckNo.DeptNo2(dv.getDept_no(), dv);
			if ( a ) { System.out.println("번호 생성 규칙에 어긋납니다. 다시 확인해주세요");
			} else {
				try {
					conn = Top_JDBC_Connection.openDataBase();
					pstmt = conn.prepareStatement(topsql.DepartSelectAllSQL);
					pstmt.setString( 1, dv.getDept_no());
					rs = pstmt.executeQuery();
					if ( rs.next() ) {
						System.out.println("이미 사용중인 학과번호 입니다. 다시 입력해주세요.");
					} else { break; }
				} catch ( Exception e ) {
					e.printStackTrace();
				} finally {
					Top_JDBC_Connection.closeDataBase(conn, pstmt, rs);
				}
			}
		}
		System.out.print("학과명을 입력하세요 : ");
		dv.setDept_name( sc.next() );
		System.out.print("학과 연락처를 입력하세요 : ");
		dv.setDept_tel( sc.next() );
		System.out.print("학과 위치를 입력하세요 : ");
		dv.setDept_loc( sc.next() );
		while ( b ) {
			System.out.print("담당 교수 번호를 입력하세요 : ");
			dv.setProf_no( sc.next() );
			if ( dv.getProf_no().equals(dv.getDept_no().substring(0, 2))) {
				try {
					conn = Top_JDBC_Connection.openDataBase();
					pstmt = conn.prepareStatement(topsql.DepartInfoSQL);
					pstmt.setString( 1, dv.getProf_no() );
					rs = pstmt.executeQuery();
					if ( rs.next() ) {
						System.out.println("입력하신 교수님은 담당하신 학과가 있습니다. 다시 확인해주세요.");
					} else { break; }
				} catch ( Exception e ) {
					e.printStackTrace();
				} finally {
					Top_JDBC_Connection.closeDataBase(conn, pstmt, rs);
				}
			} else { System.out.println("학과 전공 교수가 아닙니다. 다시 확인해주세요."); }
		}
		System.out.println( dv.toString() );
		while ( b ) {
			System.out.print("저장하시겠습니까? [ Y / N ] : ");
			switch ( sc.next() ) {
			case "Y" : case "y" :
				try {
					conn = Top_JDBC_Connection.openDataBase();
					pstmt = conn.prepareStatement(topsql.DepartInsertSQL);
					pstmt.setString( 1, dv.getDept_no() );
					pstmt.setString( 2, dv.getDept_name() );
					pstmt.setString( 3, dv.getDept_tel() );
					pstmt.setString( 4, dv.getDept_loc() );
					pstmt.setString( 5, dv.getProf_no() );
					pstmt.executeUpdate();
					System.out.println("등록되었습니다.");
				} catch ( Exception e ) {
					e.printStackTrace();
				} finally {
					Top_JDBC_Connection.closeDataBase(conn, pstmt, rs);
				}
				b = false; break;
			case "N" : case "n" :
				System.out.println("작업이 취소되었습니다.");
				System.out.println("학과 관련 업무 화면으로 이동합니다.");
				Top_DepartSubMain.departMainScreen();
				b = false; break;
			default :
				System.out.println("잘못 입력하셨습니다. 다시 입력해주세요");
			}
		}
		b = true;
		while ( b ) {
			System.out.print("학과 정보를 추가 등록 하시겠습니까? [ Y / N ] : ");
			switch ( sc.next() ) {
			case "Y" : case "y" :
				System.out.println("학과 정보를 추가 등록 하겠습니다.");
				createDepart();
				b = false; break;
			case "N" : case "n" :
				System.out.println("학과 관련 업무 화면으로 이동합니다.");
				Top_DepartSubMain.departMainScreen();
				b = false; break;
			default :
				System.out.println("잘못 입력하셨습니다. 다시 입력해주세요");
			}
		}
	}
}